A publish/subscribe model supports loosely coupled asynchronous communication between information producers and consumers. Typically, the producer and consumer need not necessarily know of the existence of each other. A system that uses a publish/subscribe model to facilitate asynchronous communication between entities typically includes one or more producers and several consumers.
In some cases, an information producer (e.g., publishes events) can be an information consumer (e.g., consumes events) as well. In such scenarios, a circular event publication issue might be seen.
For example, a component of an application user interface or other display page might be configured to publish a “change” event upon occurrence of an update to an attribute or other data value of the component. There may be other entities within that system—typically the consumer entities—that may be interested in these changes. For example, such consumer entities may have “subscribed” to the change event, so that they are notified whenever a value of the entity that they are interested in changes. A circular event publication may occur, for example, if the component that published the change event is also a consumer of the change event, or subscribes to another event published by another component directly or indirectly in response to the change event.